home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Libraries / Aidan's Class Libraries / Source / Headers / CLLayout.h < prev    next >
Encoding:
Text File  |  1997-07-13  |  2.1 KB  |  83 lines  |  [TEXT/CWIE]

  1. //Copyright (c) 1997 Aidan Cully
  2. //All rights reserved
  3.  
  4. #ifndef __LAYOUT_H
  5. #define __LAYOUT_H
  6.  
  7. #include <Types.h>
  8. #include <QuickDraw.h>
  9. #include <Events.h>
  10. #include "CLList.h"
  11. #include "CLMouseListener.h"
  12.  
  13. class TDrawSlate;
  14. class TBaseWindow;
  15.  
  16. class TLayoutBranch;
  17.  
  18. class TLayoutLeaf:
  19.     public MMouseListener
  20. {
  21. protected:
  22.     enum rectSide {
  23.         left=0,
  24.         top=1,
  25.         right=2,
  26.         bottom=3
  27.     };
  28.     static CursPtr sPresCurs;
  29.     Rect mContentRect;
  30.     TLayoutBranch *mParent;
  31.     virtual Rect GetLocalRect();
  32.     virtual Rect GetRelativeRect();
  33.     TBaseWindow *mWindow;
  34.     virtual Boolean HandleMouseSelf( TMouseButtonEvent* );
  35.     virtual void HandleMouseEnter();
  36.     virtual void HandleMouseExit();
  37. public:
  38.     TLayoutLeaf( TLayoutBranch* );
  39.     virtual void AttachedToWindow( TBaseWindow*, Rect );
  40.     virtual ~TLayoutLeaf();
  41.     virtual Boolean Init();
  42.     virtual Boolean Close();
  43.     virtual Boolean TrySize( Rect );
  44.     virtual void DrawSelf( TDrawSlate* );
  45.     virtual void Draw( TDrawSlate* );
  46.     virtual void HandleMouse( TMouseButtonEvent* );
  47.     virtual Rect GetLargestSize()=0;
  48.     Rect GetRect();
  49.     virtual Boolean SetParent( TLayoutBranch *newParent );
  50.     virtual Boolean MakeActive( Boolean );
  51.     virtual void CalcMouseMove( Point, RgnHandle );
  52.     virtual void HandleMouseMoved( TMouseEvent*, bool );
  53.     virtual void GetClip( RgnHandle );
  54. };
  55.  
  56. class TLayoutBranch:public TLayoutLeaf {
  57. protected:
  58.     class TChildStruct {
  59.     public:
  60.         TLayoutLeaf *mChild;
  61.         BOOLEAN mBinds[4];
  62.     };
  63.     TList<TChildStruct*> mChildren;
  64.     TLayoutLeaf *mActiveChild;
  65.     virtual Boolean AcceptNewSubSizeRequest( Rect newSubRect, TLayoutLeaf *sub );
  66.     virtual void DrawSelf( TDrawSlate* );
  67.     virtual void BuildChildren()=0;
  68. public:
  69.     TLayoutBranch( TLayoutBranch* );
  70.     virtual void AttachedToWindow( TBaseWindow*, Rect );
  71.     virtual ~TLayoutBranch();
  72.     virtual Boolean AddChild( TLayoutLeaf*, Rect, Boolean* );
  73.     virtual Boolean RemoveChild( TLayoutLeaf* );
  74.     virtual Rect GetLargestSize();
  75.     virtual Boolean Close();
  76.     virtual Boolean TrySize( Rect );
  77.     virtual Boolean MakeActive( Boolean );
  78.     virtual Boolean SetActiveChild( TLayoutLeaf* );
  79.     virtual void CalcMouseMove( Point, RgnHandle );
  80.     virtual void CalcClip( TLayoutLeaf*, RgnHandle );
  81. };
  82.  
  83. #endif